package com.py.credit.service;

import java.math.BigInteger;
import java.util.LinkedHashMap;
import java.util.List;

import com.py.credit.entity.DictDetailEntity;
import com.py.credit.entity.DictEntity;
import com.py.framework.core.common.Page;

/**
 * 字典服务Service
 *
 * @author Leegern
 * @date 2018年4月20日
 */
public interface SysDictService {

	/**
	 * 添加字典信息
	 *
	 * @param entity
	 *            字典实体
	 * @return
	 */
	int addDict(DictEntity entity);

	/**
	 * 分页查询字典信息
	 *
	 * @param dictKey
	 *            标识码
	 * @param dictName
	 *            字典名称
	 * @param page
	 *            分页实体
	 * @return
	 */
	List<DictEntity> queryDictListForPage(String dictKey, String dictName, String enabled, String dtlValue, Page page);

	/**
	 * 根据Id查询字典数据
	 *
	 * @param id
	 *            主键
	 * @return
	 */
	DictEntity fineOneDict(long id);

	/**
	 * 批量更新字典
	 *
	 * @param ids
	 *            字典ID集合
	 * @param enabled
	 *            是否使用
	 * @param delFlag
	 *            删除标识
	 * @return
	 */
	int batchUpdateDictStatus(List<Long> ids, int enabled, int delFlag);

	/**
	 * 更新字典信息
	 *
	 * @param entity
	 *            字典实体
	 * @return
	 */
	int updateDict(DictEntity entity);

	/**
	 * 添加字典明细信息
	 *
	 * @param entity
	 *            字典明细实体
	 * @return
	 */
	int addDictDetail(DictDetailEntity entity);

	/**
	 * 分页查询字典明细信息
	 *
	 * @param params
	 *            分页信息
	 * @param dictId
	 * @return
	 */
	List<DictDetailEntity> queryDictDetailListForPage(String dtlKey, String dtlValue, BigInteger dictId, Page page);

	/**
	 * 根据Id查询字典明细
	 *
	 * @param id
	 *            主键
	 * @return
	 */
	DictDetailEntity fineOneDictDetail(long id);

	/**
	 * 批量更新字典明细
	 *
	 * @param ids
	 *            字典ID集合
	 * @param enabled
	 *            是否使用
	 * @param delFlag
	 *            删除标识
	 * @return
	 */
	int batchUpdateDictDetailStatus(List<Long> ids, int enabled, int delFlag);

	/**
	 * 更新字典明细信息
	 *
	 * @param entity
	 *            字典明细实体
	 * @return
	 */
	int updateDictDetail(DictDetailEntity entity);

	/**
	 * 根据字典明细键判断是否有重复数据
	 *
	 * @param dtlKey
	 *            明细键
	 * @param dictId
	 *            字典Id
	 * @param dictDetailId
	 *            字典明细Id
	 * @return
	 */
	List<DictDetailEntity> getDictDetailByKey(long dictId, long dictDetailId, String dtlKey);

	/**
	 * 根据字典KEY值和明细KEY获取字典详情数据
	 *
	 * @param dictKey
	 *            字典KEY值
	 * @param dtlKey
	 *            明细KEY值
	 * @return
	 */
	List<DictDetailEntity> getDictDetails(String dictKey, String dtlKey);
	
	List<DictDetailEntity> getDictDetailsBylen(String dictKey, String dtlKey);

	List<LinkedHashMap> seletctDictInfo();

	/**
	 * 根据dicKey查询字典数据
	 *
	 * @param dictKey
	 * @return
	 */
	List<DictEntity> fineSameDict(String dictKey);
}